//#include "TriangleDemo.h"
//
//struct VertexPos
//{
//	XMFLOAT3 pos;
//};
//
//XMMATRIX                g_World;
//XMMATRIX                g_View;
//XMMATRIX                g_Projection;
//
//TriangleDemo::TriangleDemo() :m_pInputLayout(nullptr), m_pVertexBuffer(nullptr),m_pSolidColorPS(0),m_pSolidColorVS(0), g_pConstantBuffer11(0)
//{
//
//}
//
//
//TriangleDemo::~TriangleDemo()
//{
//}
//
//
//bool TriangleDemo::LoadContent()
//{
//	//载入顶点着色器
//	g_World = XMMatrixIdentity();
//	g_View = XMMatrixIdentity();
//	g_Projection = XMMatrixIdentity();;
//	ID3DBlob *vsBuffer = 0;
//	bool compileResult = CompileD3DShader(L"ShaderT.fx", "VS_Main", "vs_4_0", &vsBuffer);
//	if (!compileResult)
//	{
//		MessageBoxA(0, "载入顶点着色器错误", "编译错误", MB_OK);
//		return false;
//	}
//
//	HRESULT result;
//	result = m_pd3dDevice->CreateVertexShader(vsBuffer->GetBufferPointer(), vsBuffer->GetBufferSize(),
//		0, &m_pSolidColorVS);
//
//	if (FAILED(result))
//	{
//		if (vsBuffer)
//		{
//			vsBuffer->Release();
//		}
//		return false;
//	}
//
//	D3D11_INPUT_ELEMENT_DESC solidColorLayout[] =
//	{
//		{ "POSITION",0,DXGI_FORMAT_R32G32B32_FLOAT,0,0,D3D11_INPUT_PER_VERTEX_DATA,0 }
//	};
//
//	UINT numLayoutElements = ARRAYSIZE(solidColorLayout);
//	result = m_pd3dDevice->CreateInputLayout(solidColorLayout, numLayoutElements, vsBuffer->GetBufferPointer(),
//		vsBuffer->GetBufferSize(), &m_pInputLayout);
//	vsBuffer->Release();
//
//	if (FAILED(result))
//	{
//		return false;
//	}
//
//	//载入像素着色器
//	ID3DBlob *psBuffer = 0;
//	compileResult = CompileD3DShader(L"ShaderT.fx", "PS_Main", "ps_4_0", &psBuffer);
//	if (!compileResult)
//	{
//		MessageBoxA(0, "像素着色器加载失败", "编译错误", MB_OK);
//		return false;
//	}
//
//	result = m_pd3dDevice->CreatePixelShader(psBuffer->GetBufferPointer(), psBuffer->GetBufferSize(),
//		0, &m_pSolidColorPS);
//	psBuffer->Release();
//	if (FAILED(result))
//	{
//		return false;
//	}
//	VertexPos vertices[] =
//	{
//		XMFLOAT3(0.0f, 0.5f, 0.5f),
//		XMFLOAT3(0.5f, -0.5f, 0.5f),
//		XMFLOAT3(-0.5f, -0.5f, 0.5f)
//
//	};
//
//	D3D11_BUFFER_DESC vertexDesc;
//	ZeroMemory(&vertexDesc, sizeof(vertexDesc));
//	vertexDesc.Usage = D3D11_USAGE_DEFAULT;
//	vertexDesc.BindFlags = D3D11_BIND_VERTEX_BUFFER;
//	vertexDesc.ByteWidth = sizeof(VertexPos) * 3;
//
//	D3D11_SUBRESOURCE_DATA resourceData;
//	ZeroMemory(&resourceData, sizeof(resourceData));
//	resourceData.pSysMem = vertices;
//
//	result = m_pd3dDevice->CreateBuffer(&vertexDesc, &resourceData, &m_pVertexBuffer);
//	if (FAILED(result))
//	{
//		return false;
//	}
//
//
//	D3D11_BUFFER_DESC cbDesc;
//	cbDesc.ByteWidth = sizeof(ConstBuffer);
//	cbDesc.Usage = D3D11_USAGE_DEFAULT;
//	cbDesc.BindFlags = D3D11_BIND_CONSTANT_BUFFER;
//	cbDesc.CPUAccessFlags = 0;
//	cbDesc.MiscFlags = 0;
//	cbDesc.StructureByteStride = 0;
//
//	// Fill in the subresource data.
//	//D3D11_SUBRESOURCE_DATA InitData;
//	//InitData.pSysMem = &ConstBufferData;
//	//InitData.SysMemPitch = 0;
//	//InitData.SysMemSlicePitch = 0;
//
//	result = m_pd3dDevice->CreateBuffer(&cbDesc, nullptr,
//		&g_pConstantBuffer11);
//	if (FAILED(result))
//	{
//		MessageBoxA(0, 0, 0, 0);
//	}
//	return true;
//}
//
//void TriangleDemo::UnLoadContent()
//{
//	if (m_pSolidColorPS)
//		m_pSolidColorPS->Release();
//	if (m_pSolidColorVS)
//		m_pSolidColorVS->Release();
//	if (m_pVertexBuffer)
//		m_pVertexBuffer->Release();
//	if (m_pInputLayout)
//		m_pInputLayout->Release();
//	m_pSolidColorVS = 0;
//	m_pSolidColorPS = 0;
//	m_pVertexBuffer = 0;
//	m_pInputLayout = 0;
//}
//
//void TriangleDemo::Update(float dt)
//{
//
//}
//
//
//void TriangleDemo::Render()
//{
//	if (m_pImmediateContext == 0)
//		return;
//	//清除渲染目标视图
//	float clearColor[4] = { 0.5f, 0.5f, 0.5f, 1.0f };//背景颜色
//	m_pImmediateContext->ClearRenderTargetView(m_pRenderTargetView, clearColor);
//
//	UINT stride = sizeof(VertexPos);
//	UINT offset = 0;
//	//设置数据信息格式控制信息
//	m_pImmediateContext->IASetInputLayout(m_pInputLayout);
//	//设置要绘制的几何体信息
//	m_pImmediateContext->IASetVertexBuffers(0, 1, &m_pVertexBuffer, &stride, &offset);
//
//	//指明如何绘制三角形
//	m_pImmediateContext->IASetPrimitiveTopology(D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST);
//
//
//	static float t = 0.0f;
//	static ULONGLONG timeStart = 0;
//	ULONGLONG timeCur = GetTickCount64();
//	if (timeStart == 0)
//		timeStart = timeCur;
//	t = (timeCur - timeStart) / 10000.f;
//
//	// Rotate cube around the origin
//	g_World = XMMatrixRotationZ(t);
//	ConstBuffer ConstBufferData;
//	ConstBufferData.m_world = XMMatrixTranspose(g_World);
//	ConstBufferData.m_view = g_View;
//	ConstBufferData.m_proj = g_Projection;
//
//	m_pImmediateContext->UpdateSubresource(
//		g_pConstantBuffer11,
//		0,
//		nullptr,
//		&ConstBufferData,
//		0,
//		0
//		);
//
//	m_pImmediateContext->VSSetShader(m_pSolidColorVS, 0, 0);
//	m_pImmediateContext->VSSetConstantBuffers(0, 1, &g_pConstantBuffer11);
//	m_pImmediateContext->PSSetShader(m_pSolidColorPS, 0, 0);
//	m_pImmediateContext->VSSetConstantBuffers(0, 1, &g_pConstantBuffer11);
//	m_pImmediateContext->Draw(3,0);
//	//马上输出
//	m_pSwapChain->Present(0, 0);
//
//}
